package com.study.suanfa.shuzu;

import java.util.Arrays;

/**
 * @description: MoNiZhan   数组模拟栈
 * @date: 2020/11/30 17:50
 * @author: hcm
 * @version: 1.0
 */
public class MoNiZhan {
    public static void main(String[] args) {
        MyStack myStack = new MyStack(3);
        //进栈
        myStack.pushStack(1);
        myStack.pushStack(2);
        myStack.showArr();
        myStack.popStack();
        myStack.showArr();
    }

}

/**
 * 数组实现栈
 */
class MyStack{
    /**
     * 最大容量
     */
    int maxSize;

    /**
     * 栈顶
     */
    int top = -1;

    /**
     * 底层数组
     */
    int[] arr;

    public MyStack(int maxSize) {
        this.maxSize = maxSize;
        arr = new int[maxSize];
    }

    /**
     * 空判
     */
    public Boolean nullFlag(){
        if(top == -1){
            return true;
        }
        return false;
    }
    /**
     * 溢出判
     */
    public Boolean fullFlag(){
        if(top == maxSize-1){
            return true;
        }
        return false;
    }

    /**
     * 入栈
     */
    public void pushStack(int data){
        if(fullFlag()){
            System.out.println("栈已满，无法压入元素");
            return;
        }
        top++;
        arr[top] = data;
    }

    /**
     * 出栈
     */
    public void popStack() {
        //空判
        if (nullFlag()) {
            System.out.println("空栈，无法再出");
            return ;
        }
        arr[top] = 0;
        top--;
    }

    /**
     * 显示数组元素
     */
    public void showArr(){
        System.out.println(Arrays.toString(arr));
    }
}
